#!/usr/bin/env python
# 指定导包的路径：是为了后面的导包按照美多商城的导包方式正常导包
import sys

# sys.path.insert(导包路径列表的角标，0表示新的导包路径在最前面, '新的导包路径，这里是指向第一个meiduo_mall')
# 如何指向第一个meiduo_mall？从当前的scripts文件目录往上回退两级即可
sys.path.insert(0, '../../')

# sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))


# 加载Django程序的环境
# 设置Django运行所依赖的环境变量
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'meiduo_mall.settings.dev'

# 让Django进行一次初始化
import django

django.setup()

# 千万注意 项目导包一定放在最后
from apps.contents.utils import get_categories
from apps.goods.utils import get_breadcrumb, get_goods_specs
from apps.goods.models import SKU
from django.template import loader
from django.conf import settings


# 生成静态详情页
def generate_static_sku_detail_html(sku):
    print('脚本生成....{}.html'.format(sku.id))
    # 1.查询商品频道分类
    categories = get_categories()
    # 2.查询面包屑导航
    breadcrumb = get_breadcrumb(sku.category)

    # 3.查询当前商品的规格
    goods_specs = get_goods_specs(sku)

    # 渲染页面
    context = {
        'categories': categories,
        'breadcrumb': breadcrumb,
        'sku': sku,
        'specs': goods_specs,
    }

    # 使用上下文字典渲染详情页HTML文件，并得到详情页的HTML字符串
    template = loader.get_template('detail.html')
    detail_html_str = template.render(context)

    # 将详情页的HTML字符串写入到指定的静态文件中
    # file_path = '路径/front_end_pc/goods/3.html'
    file_path = os.path.join(os.path.dirname(os.path.dirname(settings.BASE_DIR)),
                             'front_end_pc/goods/' + str(sku.id) + '.html')
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(detail_html_str)


if __name__ == '__main__':
    # 脚本的入口：查询所有的sku信息，遍历他们，每遍历一个sku就生成一个对应的静态页
    skus = SKU.objects.all()
    for sku in skus:
        generate_static_sku_detail_html(sku)
